import Layout from '@/layout'
export default [
  {
    path: '/park',
    component: Layout,
    permission: 'park', // 知识点：有权限控制的路由一般都会给一个perssion属性值，具体值由后端决定
    meta: { title: '园区管理', icon: 'el-icon-office-building' },
    children: [
      {
        path: 'building',
        permission: 'park:building',
        meta: { title: '楼宇管理' },
        component: () => import('@/views/Park/Building/index')
      },
      {
        path: 'enterprise',
        permission: 'park:enterprise',
        meta: { title: '企业管理' },
        component: () => import('@/views/Park/Enterprise/index')
      }
    ]
  },
  {
    path: '/parking',
    component: Layout,
    permission: 'parking',
    meta: { title: '行车管理', icon: 'el-icon-guide' },
    children: [
      {
        path: 'area',
        permission: 'parking:area',
        component: () => import('@/views/Car/CarArea'),
        meta: { title: '区域管理' }
      },
      {
        path: 'card',
        permission: 'parking:card',
        component: () => import('@/views/Car/CarCard'),
        meta: { title: '月卡管理' }
      },

      {
        path: 'pay',
        permission: 'parking:payment',
        component: () => import('@/views/Car/CarPay'),
        meta: { title: '停车缴费管理' }
      },
      {
        path: 'rule',
        permission: 'parking:rule',
        component: () => import('@/views/Car/CarRule'),
        meta: { title: '计费规则管理' }
      }
    ]
  },
  {
    path: '/pole',
    component: Layout,
    permission: 'pole',
    meta: { title: '一体杆管理', icon: 'el-icon-refrigerator' },
    children: [
      {
        path: 'info',
        permission: 'pole:info',
        component: () => import('@/views/Rod/RodManage'),
        meta: { title: '一体杆管理' }
      },
      {
        path: 'waring',
        permission: 'pole:warning',
        component: () => import('@/views/Rod/RodWarn'),
        meta: { title: '告警记录' }
      }
    ]
  },
  {
    path: '/sys',
    component: Layout,
    permission: 'sys',
    meta: { title: '系统管理', icon: 'el-icon-setting' },
    children: [
      {
        path: 'role',
        permission: 'sys:role',
        component: () => import('@/views/System/Role/index'),
        meta: { title: '角色管理' }
      },
      {
        path: 'user',
        permission: 'sys:user',
        component: () => import('@/views/System/Employee/index'),
        meta: { title: '员工管理' }
      }
    ]
  }
]

/**
 * 知识点：【重点】实现权限控制的思路
 * 
 * 实现权限控制的思路：
 * 0.权限认证一般写在路由守卫（推荐）、登录成功后
 * 1.和后端约定好权限接口的返回信息
 * 2.在拦截器或者路由守卫中调用获取用户权限信息的接口，获取【用户权限】
 * 3.把动态路由单独抽取出来成为一个模块，让项目默认情况下只能访问静态路由
 * 4.把【用户权限】与项目里面所有的动态路由（需要访问权限的路由）进行匹配，获取用户可访问的动态路由信息，把该值保存到vuex里面
 * 5.动态往router对象里面添加动态路由（让路由可访问）；把动态路由的值保存到vuex里面（让路由菜单可展示），
 * 左侧栏展示菜单的时候，改为从vuex里面获取菜单值
 * 6.退出登录的时候清空vuex保存的路由菜单，重置路由对象（让路由不可访问）
 * 7.根据后端的权限操作映射表，通过自定义指令实现按钮展示的权限控制，判断【用户权限】是否包含对应操作按钮的操作权限，有才展示按钮
 * 权限和按钮操作映射 eg ：
 * 添加/编辑楼宇	park:building:add_edit （这个值可以作为自定义指令的参数，在自定义指令逻辑里面判断参数是否在【用户权限】里）
   楼宇管理	park:building:list
   删除楼宇	park:building:remove
   添加/编辑企业	park:enterprise:add_edit
   8.特殊处理下超级管理员等独特角色的权限
 */
